package com.shujia.wyh.day12.ketang;

/*
        多态：同一个对象（某一个事物），在不同时刻表现出来的不同状态。
        举例：
            猫是动物，狗是动物
            水（液态，固态，气态）

        多态的前提：
            1、要有继承关系。
            2、要有方法的重写。
                其实这里没有重写也是可以的，但是没有重写是没有意义的
                动物 d1 = new 猫();
                动物 d2 = new 狗();
            3、要有父类的引用指向子类对象。
                父 f = new 子();

        多态访问成员的特点：
            1、成员变量
                编译看左，运行也看左。
            2、构造方法
                创建子类对象的时候，访问父类中的构造方法，对父类中的数据进行初始化
            3、成员方法
                编译看左，运行看右。
            4、静态的成员方法
                编译看左，运行也看左
                （静态是属于类本身的东西，而且我们之前说过，静态的方法子类无法重写，所以访问的还是左边的）

 */
class Fu{
    int num = 100;

    Fu(){
        System.out.println("这是父类中的无参构造方法");
    }

    public void show(){
        System.out.println("这是父类中的方法");
    }

    public static void fun(){
        System.out.println("这是父类中静态的fun方法");
    }
}


class Zi extends Fu{
    int num = 300;

    Zi(){
        System.out.println("这是子类中的无参构造方法");
    }

    @Override
    public void show(){
        num = 200;
        System.out.println("这是子类中的方法");
    }

    public static void fun(){
        System.out.println("这是子类中静态的fun方法");
    }
}


public class DuoTaiDemo1 {
    public static void main(String[] args) {
        Fu f = new Zi();
        System.out.println(f.num);
        f.show();
        f.fun();
    }
}
